/**
 * Vuex状态管理 此文件为vuex入口文件
 * 避免项目的所有状态都集中到比较大的对象，分割成模块，详情参考vuex模块描述：https://vuex.vuejs.org/zh/guide/modules.html
 * 使用请遵循以下规则：https://vuex.vuejs.org/zh/guide/structure.html
 * 1.应用层级的状态应该集中到单个 store 对象中。
 * 2.提交 mutation 是更改状态的唯一方法，并且这个过程是同步的。
 * 3.异步逻辑都应该封装到 action 里面。
 */
import Vue from 'vue'
import Vuex from 'vuex'

import tabBar from './modules/tabBar.js'
import getters from './getters.js'

Vue.use(Vuex)

const store = new Vuex.Store({
	state: {},
	mutations: {},
	// 作为分割模块，里面每一个模块都会拥有自己的state、getter等等
	modules: {
		tabBar,
	},
	// 理解为vue中的计算属性，接收一个与store实例具有相同方法和属性的context对象(包含模块中的store)
	getters,
})

export default store
